package com.softtown.modules.sys.service;

import com.github.pagehelper.PageInfo;
import com.softtown.common.service.BaseService;
import com.softtown.modules.sys.dto.CompSysUserApplPageDTO;
import com.softtown.modules.sys.dto.JoinCompanyDTO;
import com.softtown.modules.sys.entity.CompSysUserApplEntity;
import com.softtown.modules.sys.entity.SysCompEntity;
import com.softtown.modules.sys.vo.UserEmplPermitVO;

/**
 * @author: Dingyayong
 * @Date: 2019/6/3 17:10
 * @Description:
 */
public interface CompSysUserApplService extends BaseService<CompSysUserApplEntity> {

    /**
     * 加入公司
     *
     * @param sysCompEntity
     * @param joinCompanyDTO
     * @return void
     * @Author fuming
     * @Date 2020/5/27 11:22
     */
    void joinCompany(SysCompEntity sysCompEntity, JoinCompanyDTO joinCompanyDTO);

    /**
     * 成员加入许可一览
     *
     * @param compId
     * @return
     * @author Dingyayong
     * @date 2019/6/4 15:57
     */
    UserEmplPermitVO permitList(Long compId);

    /**
     * 拒绝申请
     * @param compId
     * @param userId
     * @param compUserId
     * @return void
     * @Author fuming
     * @Date 2020/5/27 11:23
     */
    void refuse(Long compId, Long userId, Long compUserId);

    /**
     * 根据公司角色查询用户
     *
     * @param compSysUserApplPageDTO
     * @return
     * @author Dingyayong
     * @date 2019-06-22 20:53
     */
    PageInfo<CompSysUserApplEntity> getUserApplList(CompSysUserApplPageDTO compSysUserApplPageDTO);

    /**
     * 根据用户id和公司id查找客户
     * @param compId
     * @param userId
     * @return com.softtown.modules.sys.entity.CompSysUserApplEntity
     * @Author fuming
     * @Date 2020/5/27 11:24
     */
    CompSysUserApplEntity findByUserIdAndCompId(Long compId, Long userId);

    /**
     * 修改成员申请加入表
     *
     * @param compSysUserApplEntity
     * @return
     * @author Dingyayong
     * @date 2019/6/4 16:40
     */
    void updateComUserAppl(CompSysUserApplEntity compSysUserApplEntity);


    /**
     * 获取用户加入申请的待处理量
     * @param compId
     * @return
     */
    int getApplCount(Long compId);
}
